package com.xdcplus.web.service;

import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.entity.OpeJobTaskStaffing;
import com.xdcplus.web.common.pojo.dto.OpeJobTaskStaffingDTO;
import com.xdcplus.web.common.pojo.dto.OpeJobTaskStaffingFilterDTO;
import com.xdcplus.web.common.pojo.vo.OpeJobTaskStaffingVO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;


/**
 * (OpeJobTaskStaffing)表服务接口层
 *
 * @author Zhecheng.Ren
 * @since 2024-10-29 14:59:20
 */
public interface OpeJobTaskStaffingService extends BaseService<OpeJobTaskStaffing, OpeJobTaskStaffing, OpeJobTaskStaffingVO> {

    /**
     * 添加(OpeJobTaskStaffing)
     *
     * @param opeJobTaskStaffingDTO (OpeJobTaskStaffingDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOpeJobTaskStaffing(OpeJobTaskStaffingDTO opeJobTaskStaffingDTO);

    /**
     * 修改(OpeJobTaskStaffing)
     *
     * @param opeJobTaskStaffingDTO (OpeJobTaskStaffingDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updateOpeJobTaskStaffing(OpeJobTaskStaffingDTO opeJobTaskStaffingDTO);

    /**
     * 批量保存或更新(OpeJobTaskStaffing)
     *
     * @param opeJobTaskStaffingList (OpeJobTaskStaffingList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatch(List<OpeJobTaskStaffing> opeJobTaskStaffingList);

    /**
     * 批量保存或更新(OpeJobTaskStaffingDTOList)
     *
     * @param opeJobTaskStaffingDTOList (OpeJobTaskStaffingDTOList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatchByDTOList(List<OpeJobTaskStaffingDTO> opeJobTaskStaffingDTOList);

    /**
     * 删除(OpeJobTaskStaffing)
     *
     * @param id (OpeJobTaskStaffing)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deleteOpeJobTaskStaffingLogical(Long id);
    
    Boolean deleteOpeJobTaskStaffingByIds(String ids);

    /**
     * 查询(OpeJobTaskStaffing)
     *
     * @param opeJobTaskStaffingFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<OpeJobTaskStaffingVO>} 状态信息
     */
    List<OpeJobTaskStaffingVO> queryOpeJobTaskStaffingVOList(OpeJobTaskStaffingFilterDTO opeJobTaskStaffingFilterDTO);

    /**
     * 查询(OpeJobTaskStaffing)
     *
     * @param opeJobTaskStaffingFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<OpeJobTaskStaffingVO>} 状态信息
     */
    PageVO<OpeJobTaskStaffingVO> queryOpeJobTaskStaffing(OpeJobTaskStaffingFilterDTO opeJobTaskStaffingFilterDTO);

    /**
     * 查询一个
     *
     * @param id (OpeJobTaskStaffing)主键
     * @return {@link OpeJobTaskStaffingVO} (OpeJobTaskStaffing)信息
     */
    OpeJobTaskStaffingVO queryOpeJobTaskStaffingById(Long id);

    OpeJobTaskStaffingVO queryOpeJobTaskStaffingByToolCode(String toolCode);

    void templateDownload(HttpServletResponse response) throws UnsupportedEncodingException;

    void importData(MultipartFile file, String account) throws IOException;

    void exportData(OpeJobTaskStaffingFilterDTO opeJobTaskStaffingFilterDTO, HttpServletResponse response) throws UnsupportedEncodingException;
}
